﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace GestorDeFlotasDesktop.AbmTarifa
{
    public partial class AbmTarifa : MasterPage
    {
       
        ArrayList array = new ArrayList();
        Form ventanPadre;
        public capaDatos.SQLSyntaxisGeneration turnosCD = new capaDatos.SQLSyntaxisGeneration();
        DataTable turnosDescripcion;
        DataTable turnosErrores;
        

        public AbmTarifa( Form ventana)
        {
            InitializeComponent();
            ocultarMenu(ref ventanPadre, ventana);
           // chTHabilitado.Checked = true;
        }

        private void AbmTarifa_Load(object sender, EventArgs e)
        {
            panel1.Visible = false;
            panel2.Visible = false;
           // dataGridView1.DataSource = SampleDataTable(2);

        }
      
     

        private void AbmTarifa_FormClosing(object sender, FormClosingEventArgs e)
        {
            
            dataGridView1.ClearSelection();
            dataGridView1.DataSource="";

            DataTable aux = turnosCD.executeSp("PELUSA.controla24hs", parametrosStoredProcedure(paramsNames("test"),paramsValues(1)));//para no variar las funciones de la capa de datos 
            if (!(aux.Rows[0].ItemArray[0].Equals("ok")))
            {
               
                
                string msg = "Se ha detectado un error al intentar cerrar la ABM: La distribución actual de los turnos no cubre las 24hs del día. Corrija este problema antes de cerrar la aplicación";
                MessageBox.Show(msg);
                
                e.Cancel = true;
                dataGridView1.ClearSelection();
                turnosDescripcion.Clear();
                dataGridView1.Visible = true;
                textBox1.Visible = true;
              
                
            }
            else
                ventanPadre.Visible = true; 
        }

        private void btAlta_Click_1(object sender, EventArgs e)
        {
            panel2.Visible = true;
            panel1.Visible = true;
            BTBaja.Text = "Cancelar";
            BTBaja.Visible =true;
            chTHabilitado.Visible = true;
            if (btAlta.Text == "Cancelar")
            {
                dataGridView1.ClearSelection();
                //panel1.Visible = false;
                //panel2.Visible = false;
                btAlta.Text = "Alta";
                BTBaja.Text = "Baja";
                btClean.Text = "Limpiar";

                btClean_Click(sender, e);


            }


            if ( array.Count != 0)
            {
                btAlta.Text = "Confirmar";
                visualizarControlesAlta(true);
                int num = Convert.ToInt32(array[array.Count-1]);
               

                if (horaIni.Text == "")
                {

                    horaIni.Text = Convert.ToString(turnosDescripcion.Rows[num].ItemArray[1]);
                  
                }
                if (horaFin.Text == "")
                {

                    horaFin.Text = Convert.ToString(turnosDescripcion.Rows[num].ItemArray[2]);
                    
                }
                if (textBox1.Text == "")
                {

                    textBox1.Text = Convert.ToString(turnosDescripcion.Rows[num].ItemArray[3]);
                }
                if (vFicha.Text == "")
                {

                    vFicha.Text = Convert.ToString(turnosDescripcion.Rows[num].ItemArray[4]);
                   
                }
                if (bandera.Text == "")
                {

                    bandera.Text = Convert.ToString(turnosDescripcion.Rows[num].ItemArray[5]);
                    
                }

                Boolean valor = Convert.ToBoolean(turnosDescripcion.Rows[num].ItemArray[6]);
                if(!chTHabilitado.Checked && valor)//no puede deshabilitar desde modificación
                    MessageBox.Show("No se permite deshabilitar turnos desde la modificación. Para inhabilitar un turno, presione el botón de Baja");

                if(  chTHabilitado.Checked  && !valor){
                    //está habilitando de nuevo un turno
                    turnosErrores=turnosCD.executeSp("PELUSA.deshabilitarActivarTurno", parametrosStoredProcedure( paramsNames("id", "valor"), paramsValues(turnosDescripcion.Rows[num].ItemArray[0], "1")));
                   //Puede fallar acá porque la suma no de 24hs o porque al activarse pisaria otro turno
                     if (turnosErrores.Rows[0].ItemArray[0].ToString() != "ok")
                     {
                         MessageBox.Show(turnosErrores.Rows[0].ItemArray[0].ToString());

                     }
                     turnosErrores.Clear();
                }

                turnosErrores =turnosCD.executeSp("PELUSA.modificarTurno", parametrosStoredProcedure( paramsNames("id", "horaIni", "horaFin", "descripcion", "ficha", "bandera"), paramsValues(turnosDescripcion.Rows[num].ItemArray[0], Convert.ToInt32(horaIni.Text), Convert.ToInt32(horaFin.Text), textBox1.Text, Convert.ToDecimal(vFicha.Text), Convert.ToDecimal(bandera.Text))));

                if (turnosErrores.Rows[0].ItemArray[0].ToString() != "ok") {
                    MessageBox.Show(turnosErrores.Rows[0].ItemArray[0].ToString());
                    
                    
                }
                turnosErrores.Clear();

                string query = "select * from [PELUSA].turno ";
                if (textBox1.Text != "")
                {
                    query += "where descripcionTurno like '%" + textBox1.Text + "%'";
                }


                turnosDescripcion = turnosCD.executeQuery(query);
                this.dataGridView1.DataSource = turnosDescripcion;
                btAlta.Text = "Alta";
                panel1.Visible = false;
                panel2.Visible = false;
                chTHabilitado.Checked = Convert.ToBoolean(turnosDescripcion.Rows[0].ItemArray[6]);
                BTBaja.Visible = true;



            }
            else if (array.Count == 0 && btAlta.Text != "Confirmar")
            {   dataGridView1.Visible = false;
                BtbBuscar.Visible = false;
                btAlta.Text = "Confirmar";
                visualizarControlesAlta(true);
                //esto es un alta
            }
            else if (array.Count == 0 && btAlta.Text == "Confirmar")
            {
                BtbBuscar.Visible = false;
                dataGridView1.Visible = false;
                visualizarControlesAlta(true);

                if (horaIni.Text == "" || horaFin.Text == "" || textBox1.Text == "" || vFicha.Text == "" || bandera.Text == "")
                {
                    MessageBox.Show("Todos los campos son obligatorios. Por favor complete los campos faltantes", "ABM Turnos - Alta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                }
                else
                {
                  turnosErrores = turnosCD.executeSp("PELUSA.insertarTurno",parametrosStoredProcedure(  paramsNames("horaIni", "horaFin", "descripcion", "ficha", "bandera"), paramsValues(horaIni.Text, horaFin.Text, textBox1.Text, vFicha.Text, bandera.Text)));
                  if (turnosErrores.Rows[0].ItemArray[0].ToString() != "ok")
                  {
                      MessageBox.Show(turnosErrores.Rows[0].ItemArray[0].ToString());
                      

                  }
                  turnosErrores.Clear();
                    textBox1.Clear();
             
                    dataGridView1.ClearSelection();
                    dataGridView1.Visible = true;
                    btAlta.Text = "Alta";
                    BTBaja.Text = "Baja";
                    BtbBuscar.Visible = true;
                    panel1.Visible = false;
                    panel2.Visible = false;
                    BTBaja.Visible = true;
                    
                }
            
            }
            ;

       }

        private void BTBaja_Click_1(object sender, EventArgs e)
        {

            if (BTBaja.Text == "Cancelar")
            {
                dataGridView1.ClearSelection();
                panel1.Visible = false;
                panel2.Visible = false;
                btAlta.Text = "Alta";
                BTBaja.Text = "Baja";
                btClean.Text = "Limpiar";

                btClean_Click(sender, e);


            }

            else if (BTBaja.Text != "Confirmar" && BTBaja.Text != "Cancelar" && btAlta.Text == "Alta")
                {//primera perte del cancelar
                    BTBaja.Text = "Confirmar";
                    btAlta.Text = "Cancelar";
                    btAlta.Visible = false;
                    btClean.Visible = true;
                    chTHabilitado.Visible = false;
                    chTHabilitado.Checked = false;
                }
                else if (BTBaja.Text == "Confirmar" && btAlta.Text == "Cancelar" && array.Count == 0) {

                    MessageBox.Show("No se ha seleccionado ningún turno", "ABM Turnos - Baja", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                
                }

                else if (BTBaja.Text == "Confirmar" && array.Count != 0)
                {
                    int num = Convert.ToInt32(array[array.Count - 1]);
                    Boolean valor = Convert.ToBoolean(turnosDescripcion.Rows[num].ItemArray[6]);
                    if (!chTHabilitado.Checked && !valor)
                    {
                        MessageBox.Show("El turno seleccionado ya se encuentra deshabilitado.", "ABM Turnos - Baja", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }

                    else
                    {
                        turnosErrores = turnosCD.executeSp("PELUSA.deshabilitarActivarTurno", parametrosStoredProcedure(paramsNames("id", "valor"), paramsValues(turnosDescripcion.Rows[num].ItemArray[0], "0")));

                        //el unico error que puede dar aca es que no sume las 24hs
                        if (turnosErrores.Rows[0].ItemArray[0].ToString() != "ok")
                        {
                            MessageBox.Show(turnosErrores.Rows[0].ItemArray[0].ToString());
                           

                        }
                        turnosErrores.Clear();
                        string query = "select * from [PELUSA].turno where ";

                        query += "idTurno=" + turnosDescripcion.Rows[num].ItemArray[0];



                        turnosDescripcion = turnosCD.executeQuery(query);
                        this.dataGridView1.DataSource = turnosDescripcion;
                    }
                    panel1.Visible = false;
                    panel2.Visible = false;
                    BTBaja.Text = "Baja";
                    btAlta.Text = "Alta";
                    BtbBuscar.Visible = true;
                    chTHabilitado.Checked = false;
                    chTHabilitado.Visible = true;
                }
               
            btAlta.Visible = true;
            BTBaja.Visible = true;

        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int bandera1 = 0;
            if (BTBaja.Text == "Confirmar")
                bandera1 = 1; //bandera para indicar que no se modifique el texto de los botones si es una baja
            if (!array.Contains(e.RowIndex) && array.Count != 0)
            {
                array.RemoveRange(0, array.Count);
                horaIni.Text = "";
                horaFin.Text = "";
                textBox1.Text = "";
                vFicha.Text = "";
                bandera.Text = "";

            }

            setearCheckBox(e.RowIndex, array, dataGridView1, null, btAlta);
           
                if (array.Count != 0) {
                    int max = array.Count-1;
                 int num = Convert.ToInt32(array[max]);
                 Boolean valor = Convert.ToBoolean(turnosDescripcion.Rows[num].ItemArray[6]);
                 if (!valor)
                 {

                     chTHabilitado.Checked = false;

                 }
                 else {
                     chTHabilitado.Checked = true;
                 
                 }
                 if (horaIni.Text == "")
                 {

                     horaIni.Text = Convert.ToString(turnosDescripcion.Rows[num].ItemArray[1]);
                     horaIni.Refresh();
                 }
                 if (horaFin.Text == "")
                 {

                     horaFin.Text = Convert.ToString(turnosDescripcion.Rows[num].ItemArray[2]);
                     horaFin.Refresh();
                 }
                 if (textBox1.Text == "")
                 {

                     textBox1.Text = Convert.ToString(turnosDescripcion.Rows[num].ItemArray[3]);
                     textBox1.Refresh();
                 }
                 if (vFicha.Text == "")
                 {

                     vFicha.Text = Convert.ToString(turnosDescripcion.Rows[num].ItemArray[4]);
                     vFicha.Refresh();
                 }
                 if (bandera.Text == "")
                 {

                     bandera.Text = Convert.ToString(turnosDescripcion.Rows[num].ItemArray[5]);
                     bandera.Refresh();
                 }

                 if (bandera1 == 1)
                 {

                     BTBaja.Text = "Confirmar";
                     btAlta.Text = "Cancelar";
                 }
                 else {
                     BTBaja.Text = "Cancelar";
                 
                 
                 }

                
                }
                if (array.Count == 0) {

                    horaIni.Text = "";
                    horaFin.Text = "";
                    textBox1.Text = "";
                    vFicha.Text = "";
                    bandera.Text = "";
                   
                }

        }

        

           

        

        private void BtbBuscar_Click(object sender, EventArgs e)
        {
            string query = "select * from [PELUSA].turno";
            if (textBox1.Text != "")
            {
                query += " where descripcionTurno like '%" + textBox1.Text + "%'";
            }

     
          turnosDescripcion= turnosCD.executeQuery(query);
          this.dataGridView1.DataSource = turnosDescripcion;
          textBox1.Visible = true;
         
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
           
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if ((array.Contains(e.RowIndex)))
            {
                panel2.Visible = true;
                panel1.Visible = true;
                BTBaja.Visible = true;
                textBox1.Visible = true;
               
              //  BtbBuscar.Visible = false;
            

            }
            else
            {
                panel2.Visible = false;
                panel1.Visible = false;
                btAlta.Text = "Alta";
                BTBaja.Text = "Baja";
            }

           
        }
        private void visualizarControlesAlta(Boolean bandera)
        {
            lblRodado.Visible = bandera;
      
        }



        private void btAlta_Click(object sender, EventArgs e)
        {
            
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtRodado_TextChanged(object sender, EventArgs e)
        {

        }

        private void btClean_Click(object sender, EventArgs e)
        {
            horaIni.Text = "";
            horaFin.Text = "";
            textBox1.Text ="";
            vFicha.Text = "";
            bandera.Text = "";
            dataGridView1.DataSource = "";

        }
       


    }
}
